package main

import (
	"jianianhua-server/config"
	"jianianhua-server/database"
	"jianianhua-server/routes"
	"jianianhua-server/utils"
	"log"

	"github.com/gin-gonic/gin"
)

func main() {
	// 加载配置
	cfg := config.LoadConfig()
	
	// 初始化日志
	utils.InitLogger(cfg.LogLevel, cfg.LogFile)
	
	// 初始化数据库
	if cfg.DBHost != "" {
		database.InitDB(cfg)
		// 检查数据库结构
		database.CheckAndCreateTables()
	} else {
		log.Println("跳过数据库初始化（未配置数据库）")
	}
	
	// 初始化Redis
	if cfg.RedisHost != "" {
		database.InitRedis(cfg)
	} else {
		log.Println("跳过Redis初始化（未配置Redis）")
	}
	
	// 设置Gin模式
	if cfg.Environment == "production" {
		gin.SetMode(gin.ReleaseMode)
	}
	
	// 创建路由
	router := gin.Default()
	
	// 添加中间件
	router.Use(utils.CORSMiddleware())
	router.Use(utils.LoggerMiddleware())
	router.Use(utils.RecoveryMiddleware())
	
	// 静态文件服务 - 用于访问上传的图片
	router.Static("/uploads", "./uploads")
	
	// 注册路由
	routes.SetupRoutes(router)
	
	// 启动服务器
	serverAddr := cfg.ServerHost + ":" + cfg.ServerPort
	log.Printf("服务器启动在 %s", serverAddr)
	
	if err := router.Run(serverAddr); err != nil {
		log.Fatal("服务器启动失败:", err)
	}
}
